In a typical client/server system, client system users access an application or service on a server system through a network. Electronic commerce (“e-commerce”) applications are often based on client/server systems and may include server administration tools. For example, an electronic store maintained on the server of an e-commerce system may be accessed via a TCP/IP network by client system users.
Several methods exist enabling users to interact with applications stored on a server system using a client system. One approach is to download the entire application from the server system and then execute it directly on the client system. Unfortunately, there are several shortcomings with this approach. For example, any changes to data shared by multiple client systems would require synchronization.
A variation on this download approach is to provide virtual machine software on the client system. This helps assure that the client system will be able to run the downloaded application, however, a shortcoming exists in that it is difficult to assure that virtual machine software updates are consistent across a large number of client platforms.
Another approach to running applications on a client system allows programs and data to remain on the server system and for programs to execute on the server with control of these programs offered as a service to client systems. This approach has its own shortcomings. For example, the software (i.e. client application) necessary to access a service may not be available on the client system, or that software may be out-of-date.
With respect to the sending of user interface (“UI”) or graphical user interface (“GUI”) information to the client application from the server application for display to a user, in such a server software based approach, there are several possible schemes. In a simple scheme, the server application would send to the client application the entire graphical image for the UI. Every change to this image made by the server application would require the transmission of an updated image to the client application. This scheme is obviously inefficient and is unsuited for low-bandwidth networks such as cellular telephone networks.
This simple system may be improved by having the server communicate only information pertaining to those portions of the graphical image that have been changed. This improvement is well-known. A more significant improvement is achieved by replicating within the client application the same rendering logic that is used by the server application. However, there are shortcomings with these approaches. For example, the client application is completely dependent on the server application for all updates. This results in increased network usage. Most importantly, this scheme also requires that changes in server application software be synchronized with changes in client application software.
Thus, in a client/server environment, it is often necessary that a client application or UI be synchronized with a server application. For example, when the server application is updated to a new version or service level, the client application or UI will also require updating. The client application or UI may also need to include code to detect a new version or service level of the server application and conditionally display a different UI on the client's display screen.
A need therefore exists for a method of efficiently synchronizing a client application or UI with a backend server application. Accordingly, a solution that addresses, at least in part, the above and other problems is desired.